www.gusucode.com > 超声波测量以及形成图像 对相关信号进行模拟仿真 > 超声波测量以及形成图像 对相关信号进行模拟仿真/digital holograpy/prog/Qmap.m
function [ q ] = Qmap( a,sz ) %QMAP Calculate the Quality map of a phase map % Syntax: % [ q ] = Qmap( a,sz ) % % a is a phase map % sz is the size of the mask % q is the quality map % % ------------------------------------------------------------------------ % Reference: % [1] % 吴禄慎 任丹 吴魁 一种新的区域增长相位去包裹算法 % 南昌大学机电工程学院江西南昌330029) % 南昌大学电子信息工程学院江西南昌330029) % ------------------------------------------------------------------------ error(nargchk(2,2,nargin)) if nargout>1 error('Too many output arguments') end [M,N]=size(a); qx=zeros([M,N]); qy=qx; a=exp(i*a); dadx=angle([a(:,2:N),zeros(M,1)]./a); dady=angle([a(2:M,:);zeros(1,N)]./a); % dadx=angle(circshift(a,[0,1])./circshift(a,[0,-1])); % dady=angle(circshift(a,[1,0])./circshift(a,[-1,0])); % dadx=conv2(dadx,[1;2;1]./4,'same'); % dady=conv2(dady,[1,2,1]./4,'same'); clear a avx=conv2(dadx,ones(sz(1),sz(2)),'same')./sz(1)./sz(2); avy=conv2(dady,ones(sz(1),sz(2)),'same')./sz(1)./sz(2); left=round((sz(2)-1)/2); right=sz(2)-1-left; up=round((sz(1)-1)/2); down=sz(1)-1-up; for svy=up:-1:-down for svx=left:-1:-right qx=qx+(avx-circshift(dadx,[svy,svx])).^2; qy=qy+(avy-circshift(dady,[svy,svx])).^2; end end q=(sqrt(qx)+sqrt(qy))./sz(1)./sz(2);